Advanced search
- Indexing fields
Details about indexing fields and the impact on searching can be found in the Axiell Designer Help.
- Phonetic search
Details about configuring non-linked text and free-text fields for phonetic searching can be found in the Axiell Designer Help.
-
Require that a date field has been set to DateIso. Details can be found in the Axiell Designer Help.
Note that DateIso fields can have a Date completion property set that will auto-complete a date in a Date range search where a year only or month and year have been recorded (for example, if a date of 1937-03 has been recorded, it will be indexed as 1937-03-01 if it is the start of a date range or 1937-03-31 if it is the end of the date range). This is explained in detail here.
In this case, a partial date search of:
dating.date.start from 1937 AND dating.date.start to "1937-03"
will return a record with a date of 1937-03-01, which may not be expected. For this reason it is recommended that users always specify a full date when performing a date range search.
- Expand
Collections version 1.13 onwards makes an Expand search implicit whenever a search of an inherited field is performed and it is no longer necessary to enable the Expand option when performing a Standard search or to apply the Expand operator when performing an Advanced search when searching inherited fields.
If an implicit Expand search on inherited fields is undesirable, it can be switched off. Details here.
- Searching for special characters
Collections 1.15 provides an option to improve searches where values include special characters. When implemented, it is possible to perform a search for values with or without the special characters.
To be available, Application Administrators must run an update procedure in databases where Full Text indexing has already been implemented. Details available here.
- Period type fields
Details about implementing the Period field type in the Axiell Designer Help.
On the Advanced tab it is possible to search all available fields in the data source by constructing a search statement. This is a powerful search option but does require some understanding of the Collections search language when constructing a statement:
Note: If you initiated a search by selecting Search (F7) in the top Toolbar, the Search box will contain options for fine-tuning the previous search (Widen, Narrow, Exclude). Details here.
As a rule, a search statement has three parts separated by spaces:
[search field] [search operator] [search value]
The search field is the field you want to search. The search value is the value you want to locate in the search field. The search operator (a symbol like =
or designated term like equals
), tells Collections how to treat the search value when looking for it in the search field.
To construct a search statement:
- Double-click a name in the Fields list, or type it directly into the Search statement box.
- Double-click an operator in the Operator list, or type it into the Search statement box (an operator is added to the search statement as a symbol or special word).
- Type the search value into the Search statement box.
A search for the word dog anywhere in the title (TI) field would be written as:
title _ dog
To return all records in the current data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. your search statement is just one word:
all
all can also be used as part of your search statement. For example:
all AND NOT title _ bullet
first locates all records in the current data source and then excludes any in which the Title field (title (TI)) contains bullet.
We look at how to construct search statements like this below.
Each step in constructing a search statement is described below, followed by a collection of useful searches and examples of search statement with explanations:
To specify which field to search, we select a name from the Fields list or type the field's unique system name or tag into the Search statement box. To do this you need to know the field's system name or tag: note that a field's system name is not the same as its label in the user interface.
It is possible to translate a field's system name. When performing a search in a multilingual system, either use the field's English system name or the translated system name in the current data language. Alternatively, use the field's tag, which is the primary identifier of a field and it is the same across all languages.
There are a number of ways to identify a field's system name and tag (full details here).
The quickest and simplest way is to hover the mouse cursor over a field in Record details View or Result set View: a tooltip will display the field's system name in the current data language and its tag.
This feature is available in different modes and views, including:
- In Record details View when viewing records (in Display mode A record is either in Display mode (we view its details) or Edit mode (we add or edit its details). A record enters Edit mode as soon as we create a new record, copy a record in Record details View or edit an existing record.) and adding / editing records (in Edit mode):
- In Result set View:
Either:
- Scroll through the Fields list and double-click the system name of the field to search
-OR-
Filter the list of system names by typing into the text box above the list:
The search field's system name is added to the Search statement box:
-OR-
Rather than selecting a name from the Fields list, you can type a system name or tag directly into the Search statement box.
For example, the system name and tag for the Name field are name and BA
:
We could type either of these into the Search statement box, followed by a space:
Capitalization and punctuation are important!
Be sure to use the correct capitalization and punctuation. In this example, you would specify name.type or do
:
Typing name_type or DO
will either find nothing because the field does not exist or it will search the wrong field.
Searching non-indexed fields
By default the Fields list only includes fields that have been indexed. It is possible to search fields that have not been indexed by selecting Settings and enabling Show non-indexed fields too:
By default the Fields list only includes fields that have been indexed. Non-indexed fields can be searched but without an index the search is much slower as Collections must query every record sequentially for your search value.
To add non-indexed fields to the Fields list, select Settings and enable Show non-indexed fields too:
Note: The Fields list does not differentiate between indexed and non-indexed fields. If your search is proving to be slow, it may be that Show non-indexed fields too has been enabled and you have selected a non-indexed field from the Fields list.
Searching non-indexed fields can be slow however. To differentiate between indexed and non-indexed fields in the Fields list1:
- Indexed fields are bold.
- Non-indexed fields are listed after indexed fields, and are clearly labelled as Not indexed:
Searching Linked fields
When searching a Linked field A type of field used to link one record to another. A Linked field is a drop list of values (records that the field can link to). When a link is made, the field stores a reference to the linked record (a linkref)., a non-preferred term will be substituted automatically for a preferred term (in the same domain). In other words, if your search value is a non-preferred term, the search will actually use its preferred term.
The search Operator list includes commands for fine-tuning the results of your search. A search operator tells Collections how to treat a search value when the contents of a field are examined.
To add an operator to the Search statement box you can double-click an entry in the Operator list or you can type an operator into the Search statement box. When you double-click an entry in the list, a symbol or designated term is added to the Search statement box. For example:
- when you select is in the Operator list,
=
is added to your search statement. - when you select sounds like in the Operator list,
phonetic
is added to your search statement.
If you type your search statement, be sure to use the symbol or designated term for the operator: as you can see, the designated term is not necessarily the same as the label in the Operator list. Some operators have both a symbol and a designated term, and either can be used in you search statement.
There are three broad groups of search operator available on the Advanced tab (and one other):
With these operators you specify a value and search a field for that value:
Operator |
Search statement symbol / term |
Details |
||||||
---|---|---|---|---|---|---|---|---|
|
Depending on how the field you are searching has been indexed, your search value:
A useful and powerful search operator, especially when used in conjunction with the Rule of thumbA free text field (notes, description and book titles for instance) can be searched for values found in the field, a single word for instance; when searching a Linked field A type of field used to link one record to another. A Linked field is a drop list of values (records that the field can link to). When a link is made, the field stores a reference to the linked record (a linkref). your search value must exactly match the entire contents of the field. In either case, the creator = wood,* will return any record for creators with the last name Note: is also performs the same search as the equivalent operator. Details
An overview of Indexing
When a field is indexed its data is copied to a table and optimized for searching; when you search an indexed field, you search the optimized index rather than the field itself. There is more to indexing than that but the key point is that indexing a field makes a search in the field quick and efficient (more details can be found in the Axiell Designer Help). Not all fields in Collections are indexed. When you search a data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. using the Standard tab of the Search box, only indexed fields are made available for searching. On the Advanced tab it is possible to search non-indexed fields by selecting Settings and enabling Show non-indexed fields too, however searching a non-indexed field can be slow (a sequential search of the data across all records is performed). Incidentally, when you use the contains search operator, you effectively circumvent a field's index. For our purposes, a field can be indexed in one of two ways: the entire contents of the field is indexed as a single value (Text (term)) or each word in a field is indexed separately (Free text). When constructing an is search some awareness of how a field might be indexed is useful. Short of accessing the Collections data dictionary in Axiell Designer A tool for designing, creating, customizing and managing Axiell Collections applications and databases, broadly speaking, the Axiell Collections Model Application. As well as managing databases, including user access and permissions, Designer is used for such tasks as translating field labels, tooltips, values in drop lists, etc., there is no simple way to know how a field has been indexed, but the following guidelines, and testing with your data, will demonstrate the value of the is search operator. Note: A third type of indexing is available from Collections 1.14 onwards, Full Text indexing (details about Full Text indexing here). When implemented, an is / equals search behaves as if Text (term) indexing is implemented. The two types of index are:
|
|||||||
starts with2 |
|
Return records where the value in the search fields starts with the specified character(s). Details
starts with is useful when searching long text fields as it allows you to search for the first word in the field, in contrast to is / equals, which searches for your search term anywhere in the field. Values are implicitly truncated, and a search for This example search would be: title startswith littl See wildcards for more details about truncation. |
||||||
|
contains or contains all
Collections 1.16 saw the introduction of the contains any search operator for searching Full Text indexed data sources (details below); from Collections 1.16 onwards contains all is used in place of contains when searching Full Text indexed data sources to better distinguish from contains any. When searching Full text indexed data sources, use contains all; otherwise use contains; they perform the same function and both can be substituted with an underscore ( With the contains operator a record is returned if the precise sequence of characters in your search value is located anywhere in the search field. If you provide more than one word in your search value, all of them must be found in the search field, although they can appear in any order. For example:
A contains search can be slow as indexing (which is designed to make a search quick and efficient) is ignored as the entire content of a search field is examined character by character (details about indexing here). The contains operator can therefore be used in both indexed and non-indexed fields. Clearly, there is no need to use the title _ pa*er will find painter, paler, partner, patter, etc. |
|||||||
contains all |
|
contains or contains all
Collections 1.16 saw the introduction of the contains any search operator for searching Full Text indexed data sources (details below); from Collections 1.16 onwards contains all is used in place of contains when searching Full Text indexed data sources to better distinguish from contains any. When searching Full text indexed data sources, use contains all; otherwise use contains; they perform the same function and both can be substituted with an underscore ( As for contains (see above) and a record is returned if the precise sequence of characters in your search value is located anywhere in the search field. If you provide more than one word in your search value, all of them must be found in the search field, although they can appear in any order. Right-truncation of search values with the Note: Available from Collections version 1.16 onwards when searching a Full Text indexed data source. |
||||||
contains any |
|
A record is returned if any of your search values (you would typically provide more than one) appear anywhere in the search field. If you provide more than one word in your search value, only one of them must be found in the search field. Right-truncation of search values with the Note: Available from Collections version 1.16 onwards when searching a Full Text indexed data source. |
||||||
contains phrase |
~ / |
A record will be returned if the exact combination of words in your search value (ignoring case) is located in the search field (be sure to enclose the phrase in double quotes). For example
A contains phrase search for: title containsphrase "dollhouse with furniture" -OR- title ~ "dollhouse with furniture" would return records with titles such as Wooden dollhouse with furniture and lights and Dollhouse with furniture, but not Dollhouse with plastic furniture. Right-truncation of search values with the Note: Available from Collections version 1.16 onwards when searching a Full Text indexed data source. |
To appreciate the difference between these search operators, consider two records with the following data in the Title (title (TI)) field:
- Record 1:
buster keaton
- Record 2:
diane keaton
Operator |
Search statement |
Records returned |
Details |
---|---|---|---|
contains all |
title containsall -OR- title |
Record 1 |
Only Record 1 includes both |
contains any |
title containsany -OR- title |
Records 1 and 2 |
Both records include at least one of the search values, |
contains phrase |
title containsphrase -OR- title |
None |
No record contains this precise phrase. |
Note that right-truncation of search values with the *
wildcard character is permitted (and is in fact explicit so does not actually need to be specified), but that left-truncation is not possible. Here we see the previous contains any example with right-truncation:
title containsany "keat* bust*"
-OR-
title $ "keat* bust*"
Does not equal / does not contain
On the Standard search tab searching for records that do not equal / contain a particular value is a simple matter of selecting a search operator and specifying the value to be excluded from search results (details here).
When performing an Advanced search there is no single search operator for does not equal or does not contain. Instead we perform a Boolean AND NOT search, returning all records and excluding those that equal or contain a specified value.
For example:
all AND NOT creator = "wood, gerard"
will return records where the creator is not "wood, gerard".
These search operators are available when searching date, ISO date, integer and numeric fields.
In an ISO date field (Field type = DateIso), your search value can be a partial date: just the year (yyyy) or year followed by a month (yyyy-mm). Details about how to check a field's type here.
Operator | Search statement symbol / term | Details |
---|---|---|
greater than |
|
Return records where the value in the search field is:
|
less than |
|
Return records where the value in the search field is:
|
greater than or equal to |
|
Return records where the value in the search field is:
|
less than or equal to |
|
Return records where the value in the search field is:
|
As the name indicates, Hierarchical operators are intended for searching data sources The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. in which records are typically organized in a hierarchy of parent / child relationships - Archives and Locations and containers, for instance. They are also used when searching the authority data sources, Persons and institutions, and especially Thesaurus in which the relationship between records can be defined hierarchically via broader and narrower terms.
Some (though not all) of these operators are useful when directly searching a hierarchical data source (e.g. you selected Thesaurus from the Select data source box); typically, however, they are used when searching a data source that is linked to a hierarchical data source (e.g. you are searching the Object catalogue, which is linked to records in an authority data source).
Operator |
Search statement |
Details |
||||||||
---|---|---|---|---|---|---|---|---|---|---|
broader |
|
Search for records higher in the hierarchy than your search value:
|
||||||||
narrower |
|
Search for records lower in the hierarchy than your search value:
|
||||||||
topterm |
|
Search for the topmost record in the hierarchy in which your search value is located:
|
||||||||
generic |
|
Similar to narrower except that you search for your search value and any records lower in the hierarchy than your search value:
|
||||||||
|
Can be used to search the Thesaurus and Persons and institutions or a field linked to a record in either of these data sources The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on.. In the Thesaurus a term can have at least one Equivalent Term (equivalent_term (et)) defined; in Persons and institutions a name can have at least one Equivalent Name (equivalent_name (et)) defined. Specify a term / name as your search value and search for it AND all of its equivalent terms / names. Note: The equals operator performs this same function. |
|||||||||
related |
|
Can be used to search the Thesaurus or a field linked to a record in the Thesaurus where a term has at least one Related Term (related_term (rt)) defined for it. Specify a term as your search value and search for it AND all of its related terms. |
||||||||
pseudonym |
|
Can be used to search the Persons and institutions or a field linked to Persons and institutions where a name has at least one Pseudonym (pseudonym (PS)) defined for it and the names are in the same domain (i.e. they have the same name.type (do)). Specify a name as your search value and search for it AND all of its pseudonyms Details
This search in Persons and institutions will return two records, the record for Wood, Gerard and Wood, Ged: name pseudonym "Wood, Gerard" If we search a field linked to Persons and institutions, this search will return any record where Creator = Wood, Gerard or Wood, Ged: creator pseudonym "Wood, Gerard" Note: Double quotes are required around the search value because it includes a space. |
||||||||
hierarchical |
|
Available when searching any data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. in which records are organized in a hierarchy of parent / child relationships, notably Archives and Locations and containers. With the hierarchical search operator, your search value can be a single record in a hierarchy (e.g. a specific location) or a record in a hierarchy AND all of its children. A typical use of hierarchical is searching for records by their location. Details
To demonstrate the use of hierarchical we search on current location, but the same approach applies when searching archives. Background (but worth understanding!)
Locations are organized in a hierarchy of parent / child records in the Locations and containers data source. Here we see five levels in the locations hierarchy of the National Museum. The top level of the hierarchy is the museum itself; the museum has two sites, the Main Campus and Off-site storage; here we drill down through another three levels on the Main Campus branch of the hierarchy to individual shelves (we could go further and register boxes on shelves for instance): National Museum (NM) Main Campus (NM/MC) Ground Floor (NM/MC/GF) Special Exhibitions Room (NM/MC/GF/SER) Shelf 1 (Shelf 1) Shelf 2 (Shelf 2) Gallery 1 (NM/MC/GF/G1) Shelf 1 (Shelf 1) Shelf 2 (Shelf 2) First Floor (NM/MC/FF) Northend Hall (NM/MC/FF/NH)... Southend Hall (NM/MC/FF/SH)... Off-site storage (NM/OS)... When the Current location of an item in your collection is updated, only the lowest level of the hierarchy (the actual location) is stored in the record in the current_location.name (2A) field:
Although the full hierarchy is pulled dynamically from the location record and displayed below the current location in a merged-in field, this information is not editable or searchable (details about merged-in fields can be found here). A problem arises if the current location is not a unique name, Shelf 1 for instance. As we see in the hierarchy above, there are two locations called Shelf 1 and if we search for Shelf 1, we will return records in both locations, which is unlikely to be our objective. With the hierarchical search operator:
To demonstrate, we search the Object catalogue using the Current location name (current_location.name (2A)) field. Unless the location name is unique, you must specify the full pathway to the location as your search value. In the example above, there are several Shelf 1 locations, and specifying Shelf 1 as your search value will return records in each location with this name, which is unlikely to be your objective. Note: If the full pathway to a location is complex, you may find the Standard search tab to be a simpler environment to use the hierarchical search operator as it allows you to search for and select a location using the Find data for the field box. Details here. Specifying the level of the hierarchy you want to search for looks like this: current_location.name hierarchical "National Museum/Main Campus/Ground Floor" Note: Double quotes are required around the search value because it includes spaces and/or forward slashes. Having entered the level of the hierarchy you want to search for, you can modify the search value to narrow or expand your search results: How to modify the search value
With the addition of the National Museum (NM) Main Campus (NM/MC) Ground Floor (NM/MC/GF) Special Exhibitions Room (NM/MC/GF/SER) Shelf 1 (Shelf 1) Shelf 2 (Shelf 2) Gallery 1 (NM/MC/GF/G1) Shelf 1 (Shelf 1) Shelf 2 (Shelf 2) First Floor (NM/MC/FF) Northend Hall (NM/MC/FF/NH)... Southend Hall (NM/MC/FF/SH)... Off-site storage (NM/OS)...
|
Operator |
Search statement |
Details |
---|---|---|
sounds like |
|
Information for Application Administrators
Details about configuring non-linked text and free-text fields for phonetic searching can be found in the Axiell Designer Help. Where available, phonetic searching allows you to search a term or free-text field for words that sound like the search value. This can be useful when performing a search in English where regional spelling may be an issue. For example, a search for:
|
Type the value you want to search for into the Search statement box. Keep the following in mind:
- Searches are NOT case sensitive: a search for
Wood
will matchWood
andwood
; and accents are ignored: for example,a
matchesá
orÁ
. - It is possible to use the normalized form of letters; for example,
ae
will matchæ
;oe
will matchØ
orœ
. - It may also be possible to search for values with or without special characters3. Details below.
- If your search value includes a space, hyphen (
-
) or plus (+
), place double quotes around the entire search value. This includes dates, e.g.:"2020-10-06"
.Searching for text with a hyphenA hyphen in your record data is treated as if it is a space. This search:
title = "Good bye"
will return a record with the title Good bye or Good-bye.
When you place double-quotes around a word or phrase with a hyphen however, Collections will only return a record if it locates the hyphen. This search:
title = "Good-bye"
will only return a record with the title Good-bye.
- You can use wildcard characters in your search value:Wildcard characters
It is possible to substitute one or more wildcard characters for one or more letters in a search term.
Left-hand and right-hand truncation with the
*
wildcard is only necessary if you are running an is / equals / = search as truncation is always assumed with a contains search:Wildcard Use
Examples
*
Substitutes zero or more characters at its position in a search value.
Also known as truncation:
- left-hand truncation means placing the
*
before the search value: *value; - right-hand truncation means placing the
*
after the search value: value*; - left and right hand truncation:
*value*
appl* will match words starting with appl, e.g. apple, application, applied, etc.
paint* will match words starting with paint, e.g. paint, paints, painter, painting, etc.
The
*
wildcard can be placed anywhere in the search field:wood*
will match any word beginning withwood
: wood, woods, Woodhorn, wooden, etc.*wood
will match any word ending withwood
: Elwood, Spotswood, blackwood, Hollywood, etc.*wood*
will match any word that includeswood
: all of the above, and Spottiswoode, backwoodsman, etc.- To find all records with a value in the search field, specify
*
as your search value, e.g.:title = *
will return all records with a title.
When you use the is /
=
search operator, more often than not you will employ the*
wildcard character.?
Substitutes for any single character at its position in a search value.
appl? will match apply and apple (but not apples).
organi?e will match organise and organize.
??? will match any combination of three characters.
Tip: These two wildcard characters can be used in combination with each other.
- left-hand truncation means placing the
When configured, you can omit (or include) special characters and diacritics:
When configured by your Application Administrator, certain special characters (listed below) can be omitted from a search value4.
Without the update, it is necessary to know the exact spelling of a name like O'Toole, Peter
, for example, and to include the single quote and comma in the search value in order to have a precise match:
"O'Toole, Peter
"
And if a value includes brackets, hyphens, and so on, it is necessary to include those characters in the
.With the update, it is possible to perform a search for values with or without the special characters; furthermore, it is possible to use the normalized form of letters (for example, ae
will match æ
; oe
will match Ø
or œ
).
A space is not considered a special character so must be included in search values comprising multiple terms, but when this option is implemented O'Toole, Peter
will be matched by any of the following:
- "
O'Toole, Peter
" - "
OToole Peter
" - "
O'Toole Peter
" - "
otool peter
" otool*
Following the update, the following characters or combinations of characters can be omitted when searching a Full Text indexed database:
[
]
;
,
!
@
(
)
|
{
}
<
>
?
\r
\n
\t
`
-
=
\\
.
/
~
#
$
%
^
&
_
+
:
\"
\'
*
You will note that the *
and ?
are listed as symbols that can be omitted from a search. This is not, of course, in their capacity as wildcards: if you include these characters in your search value, they will continue to behave as wildcards.
However, consider a situation where there are three terms in the Thesaurus: ABCDEF
, ABC?
and ABC*
.
Following the update, a search for ABC*
will continue to match all three terms (the *
operates as a wildcard character).
A search for ABC
however will match ABC?
and ABC*
.
The exception
The exception is uniquely indexed fields (fields which are both indexed and only permit unique values): in this case it is not possible to omit a special character. For example, if a uniquely indexed object number contains a hyphen:
ABC-1234
searching for ABC1234
will not locate the record. The hyphen must be specified for a direct match; alternatively, using a wildcard, e.g. ABC*
, will return the record (along with any others where the object number commences with ABC
).
Diacritics
Note that searches were already case insensitive, accents were ignored in search values, and ligatures and other special letters could be matched using the normalized version of the character(s). For example:
a
will matchá
orÁ
ae
will matchæ
oe
will matchØ
orœ
With the exception of the two wildcard characters (*
and ?
) it is possible to search for a specific special character (in a Full Text indexed database) in both an Advanced and Standard search.
In an Advanced search it is necessary to enclose the special character in quotes and asterisks. For example, to search for a square bracket:
title = "*[*"
To search for an ellipsis:
title = "*…*"
In a Standard search the enclosing quotes are not required:
Beyond the guidelines above, how you specify your search value depends on what it includes:
If your search value includes spaces, the entire search value must be enclosed in quotation marks, for example:
title = "cup saucer"
As we saw above, the indexing of a field affects how you can search a field:
-
In a Free text indexed field each word in the field is indexed separately and you can search on any number of words separated by a space:
Searching for multiple values in Free text indexed fieldsIt is possible to search Free text indexed fields for two or more values by enclosing the search terms in double quotes. For example:
title = "cup saucer"
will return any records that contain the words cup and saucer anywhere and in any order in the title field. Each search value must match exactly with a value found in the searched field: cup will match cup but not cups for instance.
Truncation with the
*
wildcard character is possible on each and every term in your search value. For example:title = "cup* saucer"
will return any records that contain the words cup, cups, cuppa, etc. and saucer anywhere and in any order in the title field.
Note: It is not necessary to use
*
with contains as truncation is always assumed.
-
In a Text (term) indexed field the entire value in the field is indexed as a single value and your search value must match the data in the search field exactly, including spaces and punctuation:
Searching for multiple values in Text (term) indexed fieldsAs we have seen, the entire value in a Text (term) indexed field is indexed as a single value, including spaces and punctuation. While it is possible to search on multiple terms by enclosing them in double quotes, a record will be returned only if your search value exactly matches the data in the search field. For example, if a creator is recorded as Wood, Gerard, this search will return the record:
creator = "Wood, Gerard"
but this will not:
creator = "Gerard Wood"
Truncation with the
*
wildcard character is possible but can only occur on the last term in your search value. For example:creator = "Wood, G*"
would return records for Wood, Gerard; Wood, Graham; Wood, Georgina, etc.
Note that the
*
is added inside the double quotes.
Note: You may find that some fields presented as Date fields are in fact Text fields (details about identifying a field's data type here). Here we describe searching for dates in fields with a Date data type.
Although date fields in Collections can be configured to accept dates in a number of formats, they typically have an DateIso data format and are stored in your database with a format of yyyy-mm-dd.
Fields with a DateIso data format can also have a presentation format that determines how they display in the User Interface. A date stored in your database as 2020-10-08
can be configured to display using a European date presentation format, such as 08/10/2020
.
As a rule, when your search value is a date, you can specify it using the DateIso data format, yyyy-mm-dd or the presentation format.
The exception to this rule is a date with the Locale date (long) ISO date presentation format in which days and months are in words, e.g.:
Thursday 8 October 2020
In this case your search value can be in the DateIso data format, yyyy-mm-dd or the Locale date (short) format. The format of Locale date (short) and Locale date (long) are determined by your local Windows date settings.
Note: See Date fields for details about Date data and presentation formats.
Whichever format you use, the date must be enclosed in double quotes:
"2020-02-22"
Dates can be searched using any of the Relational operators:
=
, >
, <
, <=
(to), >=
(from)
For example, use is / =
to search for a particular date:
input.date = "2001-01-01"
or specify a range using:
-
>=
or fromand
-
<=
or to
with a Boolean operator:
input.date from "2001-01-01" AND input.date to "2001-12-31"
Note the construction of a range search:
[search field] from [date] AND [search field] to [date]
Depending on how your system has been configured by your Application Administrator you may be able to specify a partial date as your search value, such as: "2020-12" or 2020
, e.g.:
dating.date.start >= 1937
Note: When specifying a year only, it is not necessary to use double quotes around the value.
Notes
- If a partial date search in a Date field is not possible, it may be that the field's Index has not been set to DateIso by your Application Administrator.
- Although it may be possible to perform a partial date search, it is recommended that you always specify a full date as your search value. Partial date searches may not return all the records you might expect if dates in your records are incomplete; how a date field has been configured might also affect partial date searches (this is explained above).
Collections provides a special search value, today, for searching a date field for the current date. When your search value is today, it is interpreted as today's date.
This is useful in a Saved search that is run regularly to return records with the current date. For example:
input.date = today
will retrieve all records created today.
By adding or subtracting X
from today you can retrieve records with a date X
number of days before or after today. For example:
input.date = today-30
will retrieve all records created thirty days ago.
Note: Do not enclose today-30 in single or double quotes.
To retrieve records created in the last thirty days:
input.date from today-30 AND input.date to today
Note
While it might be tempting to shorten this search statement to:
input.date from today-30
this search statement only yields the same result as the previous search statement if the search field cannot contain future dates. This would be the case with input.date but not for delivery dates, for instance. For this reason it is recommended that you use an AND search statement. With AND it is also possible to construct search statements such as:
venue.date.start from today-15 AND venue.date.start to today+21
Date periods expressed as a natural language value, such as 12th century, can be saved and searched for in fields with a type of Period.
Full details about Period fields can be found here.
Although a Period field displays the natural language version of a period, the indexed (searchable) value is stored in the database as an ISO start and end date range (i.e. a numerical value). For example:
Period entered by a user |
Indexed value |
---|---|
12th century |
|
Spring 2022 |
|
late 2018 |
|
Early 19th Century - 2022 |
|
1950s |
|
When searching a Period field the search value is specified as a complete natural language period, such as 12th century (any years must be specified as digits); do not use single words (not even truncated) from the natural language period (such as century) nor ISO dates with months and/or days.
An overview of English natural language period elements that can be entered and subsequently searched for can be found here.
Behind the scenes the natural language search value is converted to an ISO date range and matched against the indexed values.
Notes:
- When searching a broad period, the exact period specified in the search will be yielded and narrower periods that fall within its range.
- It is only possible to search for a single date period, not date period ranges.
- Values must be specified in the current User Interface language in Collections when searching records.
When specifying a search value with a decimal point in a numeric field, always use a period (dot) as the decimal separator even if it is possible to enter numbers in fields (e.g. monetary amounts) using a different decimal separator, a comma for instance:
subscription_price >= 80.50
or what you are searching for:
To search for a marked checkbox, specify X as your search value, e.g.:
free_field.confidential = X
In the previous three steps we have seen how to configure a single search statement comprising:
[search field] [search operator] [search value]
For example:
- creator = "Da Vinci, Leonardo"
will return any records for objects created by Leonardo Da Vinci.
- dating.date.start = 1503
will return any records for objects produced in 1503.
With Boolean operators it is possible to combine these single search statements in various ways. For example:
- creator = "Da Vinci, Leonardo" AND dating.date.start = 1503
will return records for objects created by Leonardo Da Vinci in 1503.
- creator = "Da Vinci, Leonardo" OR dating.date.start = 1503
will return the record for an object if it was created by Leonardo Da Vinci or if it was created in 1503.
With the exception noted below, each statement that is combined with a Boolean operator must be a fully formed search statement as described in steps 1 to 3 above (comprising a search field, search operator and search value).
For example, to search records where Object name is photo (photograph, photography, etc.) AND Material is glass plate you would construct two search statements and combine them:
object_name = photo* AND material = “glass plate”
The exception to this rule is when constructing two or more statements that search the same field.
For example, to search for titles with the word festival or fair, a complete search statement would be:
title = festival OR title = fair
but as we are searching the same field, a shorthand is available:
title = festival , fair
A shorthand is available for the AND, OR and AND NOT Boolean operators. Details below.
Boolean operator |
Details |
---|---|
And |
A record must match each condition in order to be returned by the search. This search will only return records where Object name is photo (photograph, photography, etc.) AND Material is glass plate: object_name = photo* AND material = “glass plate” This Boolean operator typically decreases the number of records found by a search. Illustration
A search in Persons and institutions for:
The green area indicates which records will result from this search:
A record will only be returned for someone whose name is John and nationality is British. It will not return a record for someone called John whose nationality is American. Tip: If too many records are returned by your search, add another search term with the AND operator. Shorthand
A shorthand ( author = smi* AND author = smy* you can use: author = smi* + smy* |
Or |
A record only needs to match one condition in order to be returned by the search. This search will return records where Object name is photo (photograph, photography, etc.) OR Material is glass plate: object_name = photo* OR material = “glass plate” This Boolean operator typically increases the number of records found. Illustration
A search in Persons and institutions for:
The green area indicates which records will result from this search:
If a record includes both search values, it will be returned by the search, but it only matters that one of the search values is located. A record will be returned for:
Tip: If too few records are returned by your search, add another search term using the OR operator. Shorthand
A shorthand ( author = smi* OR author = smy* you can use: author = smi* , smy* |
And not / NAND |
A record must match the first condition but not the second to be returned by the search. This search will return records where Object name is photo (photograph, photography, etc.) but only if Material is not glass plate: object_name = photo* AND NOT material = “glass plate” This search: all NAND author = "" will return all records in which the author field is not empty. Shorthand
A shorthand ( author = smi* AND NOT author = smy* you can use: author = smi* - smy* |
When / When not |
WHEN and WHEN NOT operate like AND and AND NOT with the important difference that they are intended for searching a field that is repeatable (more than one occurrence If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. of the field is possible) and fields that are members of the same repeated group of fields. Repeatable fields
Note: The following is an overview of repeatable fields and occurrences; more details can be found Occurrences. A field can be configured to be repeatable (more than one occurrence If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. of the field is possible), and a repeatable field can be made a member of a group of fields (all of which are repeated together). In this example, a group called Production in the Object catalogue has five fields:
Each of these fields has been configured to be Repeatable and they have been assigned to a group called Production. In the Collections back-end, it looks like this: When we add an occurrence of any one of these fields, all five members of the Production group are repeated:
If we view the Field properties for these fields (in Display or Edit mode A record is either in Display mode (we view its details) or Edit mode (we add or edit its details). A record enters Edit mode as soon as we create a new record, copy a record in Record details View or edit an existing record.: right-click a field and select Properties from the context menu), we see that they are all members of the Production group: Notes
|
When |
A record is returned by this search if each individual occurrence If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. in the search field meets the search conditions. Details
The difference between AND and WHEN is that AND will return a record as long as the search conditions are met by two or more occurrences in the search field; with WHEN, each individual occurrence must meet the search conditions. Examples will make this clearer. Searching the same repeated field
Value (dimension.value (WA)) is a repeatable field (it also has a Numeric data type so relative operators such as
This record (Record 1) will be returned by an AND search, even though depth is not > 3 and length is not < 9: dimension.value > 3 AND dimension.value < 9 An AND search is a record-level search and in this case the search conditions are met by comparing the search terms to all occurrences in the record: length is A WHEN search will not return this record as both occurrences do not meet the search conditions: dimension.value > 3 WHEN dimension.value < 9 Searching two different fields in the same repeated group
In the previous example we used the WHEN Boolean operator to search a single repeatable field. WHEN can also be used to specify search conditions in a group of repeatable fields. For example, we have two records with these values:
If we wanted to search for records where depth was dimension.value > 3 AND dimension.type = depth A WHEN search will only return Record 2, where an occurrence meets both search conditions: dimension.value > 3 WHEN dimension.type = depth Example 2
We have two records with these values:
creator = "wood, gerard" AND creator.role = editor will return both records. In the first record, Wood, Gerard is found in one group occurrence and editor is found in another. creator = "wood, gerard" WHEN creator.role = editor will only return the record the second record, where Wood, Gerard has a role of editor. Shorthand
Although only one instance of WHEN or WHEN NOT can be used in a search statement, you can employ the shorthand characters (described above), for example: creator=escher*,anthonisz* WHEN creator.role=printer,artist If there is an unequal number of values on both sides of the WHEN as in this example, the last value from the shortest list will be used again. For example: creator = escher*,anthonisz* WHEN creator.role = printer,artist,engraver is processed as: (creator = escher* WHEN creator.role = printer) OR (creator = anthonisz* WHEN creator.role = artist) OR (creator = anthonisz* WHEN creator.role = engraver) |
WHEN NOT |
Useful when searching two different fields in a repeated group of fields. A record is returned by this search if the first value occurs in the repeated group of fields and the second value does not. Details
A repeated group of fields called Production has five fields, and when we add an occurrence of any one of these fields, all five members of the Production group are repeated:
With WHEN NOT a record is returned if the first value appears in a repeated group of fields and the second value does not appear in the same repeated group of fields. Consider these two records:
To understand WHEN NOT, we will first consider the results of AND, AND NOT and WHEN searches:
A quicker searchA WHEN NOT search can be slow if the first half of the search statement matches numerous records. Instead of using WHEN NOT, you can use AND NOT and WHEN for a quicker search. For example: creator = "wood, gerard" WHEN NOT creator.role = author can be written as: creator = "wood, gerard" AND NOT (creator = "wood, gerard" WHEN creator.role = author) See Nesting queries below. |
Nesting queries
When using multiple Boolean operators in your search statement, use parentheses to control the order in which the search is carried out. Processing commences with a query in the innermost brackets and expands outwards from there.
For example:
author = woolf* AND (title = mrs* OR title = lighthouse*)
The OR query is processed first and the result of that is then processed by the AND query.
In this example, processing simply occurs from left to right:
title = mrs* OR title = lighthouse* AND author = woolf*
Note: Order is important: a different order may yield different results.
When records can be organized in a hierarchy of parent / child relationships, a field can be configured to be inheritable so that a value added to the field in a parent record will also display in the field in all of its children. This can be extremely efficient as a value only needs to be entered and saved in the parent record to be inherited by all of its children.
Where records can be arranged in a hierarchy, a field can be configured to be inherited so that a record lower in the hierarchy inherits a value entered in a record immediately higher in the hierarchy (its parent). This can be efficient as a value only needs to be entered and saved in the parent record to be inherited by all of its children; importantly, while the value displays in a child record it is not stored in that record (in the child record the field is actually empty until the field is edited and the inherited value is overwritten).
In the following example, the Conditions governing access and Conditions governing reproduction fields are configured to be inherited and data has been added to both fields in a parent record:
When we view a record lower in the hierarchy, the values from the parent record are displayed in these two fields but with a dotted underline to indicate that they have been inherited:
In older versions of Collections an inherited value is a lighter grey than other data. Here we see the Archival history field in a parent record:
When we view a record lower in the hierarchy, the Archival history value is faded to indicate that it has been inherited:
An inherited value can be edited or deleted in the current record The record currently displayed in Record details View or highlighted (with a solid grey background) in Result set View or Gallery View for instance.. Here we see the Conditions governing reproduction field in Edit mode in a child record:
The value can be deleted entirely, or edited / rewritten. When you edit the record and add a value to an inherited field, the new value will not be underlined / faded as, of course, it is no longer inherited:
Tip: If you delete or edit an inherited value in a child record, it can be restored by right-clicking the field in Edit mode and selecting Restore inheritance from the context menu that displays.
In summary, when data in a field has a dotted underline (or it is faded / lighter grey than other data), it is displayed in the field but not saved in the current record. When you edit the field, the edited value is saved in the current record.
When it comes to searching for a value in parent / child records, it is important to understand that every empty field in a child record behaves as if it has inherited the value from its parent whether the field is configured as inherited or not. The difference is that when a field has NOT been configured as inherited, the parent value DOES NOT display in the child record; what is important, as we'll see, is that it is discoverable in the child record.
Whether a field is configured as inherited or not, its value is only saved in the parent record: a child field is technically empty (even if an inherited value displays in the field) until the child field is edited and a value saved in it (at which point the field is not empty and the value is not inherited).
So, if a value is only saved in a parent record, this raises the question: how do you search for a record using a value that is not actually stored in the record?
The answer depends on your version of Collections:
Previously, the Expand operator was used to search for records using one or more values inherited from a parent record but it is no longer required.
When searching for a value in a field configured as inherited, an inherited value is treated as if it is saved in a child record5.
In other words, a search for Title="Creature from Mars" will return a parent record with this title and any of its child records that have inherited this title.
Note: If the search field has not been configured as inherited, you would still use Expand. Details below.
In the Moving image catalogue we have a hierarchy of three records:
The Title field (title (TI)) has been configured to be inherited and a value has been added to the parent record:
This value is inherited by all children (and it has a dotted underline to indicate that it is inherited):
A Standard search for:
or an Advanced search for:
will automatically return all three records:
When to use Expand explicitly
When a field has not been configured as inherited a value in the parent record does not display in the child record BUT it is still possible to search for that value and return the parent record AND any of its children where the search field is empty.
And this is where we use the Expand operator.
In the Moving image catalogue example above, the Running time field (runtime.minutes (r3)) has not been configured as inherited. The Manifestation record has a runtime of 97 minutes (runtime.minutes (r3) = 97) and its child, the Item record, has no value in the runtime.minutes (r3) field.
A search for:
will return only the Manifestation record.
A search using the Expand operator (here we see the search statement in an Advanced search):
will return both records.
The short answer is the Expand operator: when performing a Standard or an Advanced search, the Expand operator makes it possible to search for records using one or more values inherited from a parent record (whether a field has been configured as inherited or not).
To demonstrate, the following hierarchy comprises 19 records:
Only the parent record has values specified for Date (early) and Date (late):
This search will return only one record:
If we use the Expand operator however (here we select the Expand checkbox in a Standard search), all 19 records will be returned:
This is a Boolean AND search and records are returned if:
- Reference Code begins with AC
And
- Date (early) is 1901
By selecting the Expand option the search is expanded to child records and empty fields are assumed to have inherited the value from a parent record.
If a field in a child record is not empty, the Expand option will respect this. For example, we add a different Date (early) to one of the records in the hierarchy:
Now when we repeat our expanded search, only 13 records are returned as 6 records in the hierarchy no longer match the search criteria.
The syntax of an expanded search is:
expand(<search statement>)
where <search statement> queries a field with inherited data.
The Standard search example given above would be constructed as:
object_number = AC* AND expand (dating.date.start = 1901)
- Select Find or press ENTER to run the search:
- All occurrences If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. of the search field(s) are searched.
- All data languages are searched in a multilingual Collections systems (details about searching in a multilingual system can be found here).
Any records returned by your search can be viewed in one or more of the record Display Views.
By default, when a search is run in a multilingual system, you search all data in all available languages irrespective of the selected Data language: if the Data language is English and you search for titles containing the word gift, any record with a title in any language that contains the word gift will be returned.
Note: Although records containing the word in languages other than English will be returned by this search, you will not see the title in the other languages until you change the Data language.
In an Advanced search it is possible to restrict a search to a specific language by providing a language code after the field name or tag in the format:
<tag or field name>[<language code>]
The language code of any of the data languages used in your system can be identified by opening the Data language drop list in the Main menu and hovering the cursor over a language label: a tooltip will display the language code:
Common language codes include:
Data language |
Language code |
---|---|
Nederlands (Nederland) |
|
English (United Kingdom) |
|
English (United States) |
|
Deutsch (Deutschland) |
|
Français (France) |
|
The following search will only return records where the title contains the word gift in British English:
title[en-GB] _ gift
I want to return:
As every record has a priref A record's unique identifier. Currently, the simplest way to view a record's unique identifier is to add the priref column to Result set View. The field tag for the priref field is %0., this search will return all records in the current data source:
priref = *
Alternatively, to return all records in the current data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. use all as your entire search statement:
all
Both of these options can be used in combination with Boolean operators, e.g.:
priref = * AND NOT title _ bullet
or
all AND NOT title _ bullet
To return all records with no value in a field, use double or single quotes with no space between. For example:
title = ""
will return all records without a title.
The AND NOT Boolean operator (described here) can also achieve this, e.g.:
all AND NOT title = *
Note: If any occurrence If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. of the search field contains a value, it will not be returned by this search.
To return all records with a value in a field, use the *
wildcard character. For example:
title = *
will return all records where the Title field (title (TI)) is not empty.
Note: If any occurrence of the search field contains a value, it will be returned by this search.
In this example, all records that do not have a certain value in a field are returned:
all AND NOT title _ bullet
This statement first locates all records in the current data source and then exclude any where the Title field (title (TI)) contains the word bullet.
When a checkbox is not selected (it does not contain a tick), it is obviously empty and its value is NULL. When a checkbox is ticked, the value it holds is an x
.
Here we see the Publish on web (publish_on_web (wp)) field on the Management details panel:
To search for records in which the Publish on web checkbox is unticked, we could perform the following Advanced search:
publish_on_web = ""
To return records where the Publish on web checkbox is ticked, we could perform either of the following searches:
publish_on_web = x
-OR-
publish_on_web = *
(return all records in which the Publish on web field contains a value).
Tip: Knowing that the value in a ticked checkbox is an x
is important when performing a search and replace on a checkbox or when adding a tick to a checkbox when importing data.
On the Standard search tab searching for records that do not equal / contain a particular value is a simple matter of selecting a search operator and specifying the value to be excluded from search results (details here).
When performing an Advanced search there is no single search operator for does not equal or does not contain. Instead we perform a Boolean AND NOT search, returning all records and excluding those that equal or contain a specified value.
For example:
all AND NOT creator = "wood, gerard"
will return records where the creator is not "wood, gerard".
When a record is created it is assigned a unique reference number called a priref A record's unique identifier. Currently, the simplest way to view a record's unique identifier is to add the priref column to Result set View. The field tag for the priref field is %0.. It is possible to search for a record or range of records using priref or its tag %0
as the search field. It is necessary to type priref or %0
into the Search statement box (it is not possible to select priref from the Fields list). For example:
priref = 2
will locate the record with the unique reference number of 2.
%0 >= 50 AND %0 <= 100
will retrieve records with a priref of 50 up to and including 100.
As every record has a priref, this search will return all records in the current data source:
priref = *
Alternatively, to return all records in the current data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. use all as your entire search statement:
all
or as part of your search statement:
all AND NOT title _ bullet
To search for a particular date, use is / =
:
input.date = "2001-01-01"
Note: All dates must be enclosed in double quotes.
Or use the Relational operators. For example:
input.date >= "2020-10-01"
will return records where the date is on or after 1 October 2020.
Or specify a range using:
-
from /
>=
and
-
to /
<=
with a Boolean operator:
input.date from "2001-01-01" AND input.date to "2001-12-31"
Note the construction of a range search:
[search field] [search operator] [search value] AND [search field] [search operator] [search value]
Examples:
Search statement | Result |
---|---|
title = account |
Will return one or more records with the word account in the Title field. Because this field has a Free text / Word index, the search value must match exactly with a word in the search field; it will not return records with the word accounts in the Title field. |
title = account* |
Will return one or more records with a word beginning with account in the Title field, including accounts and accountancy. |
creator = Dante |
Will return one or more records where the value in the Creator field is exactly and only Because this field has a Text (term) index, the search value must exactly match the entire contents of the field and if a record has |
creator = *Dante |
Will return one or more records where |
creator _ Dante |
Will return one or more records where the Creator field contains the word |
title = “building work” |
Will return one or more records where the exact phrase building work is found in the Title field. |
object_name = photo* AND material = “glass plate” |
Will return one or more records for photos (Object name is photo, photographs, photography, etc.) where the Material is recorded as glass plate. |
title = festival OR description = festival |
Will return one or more records where the word festival appears in either the Title or Description fields. |
object_name = photo* AND NOT condition = poor |
Will return one or more records for photographs that are not in poor condition. |
current_location.date = "2017-05-10" WHEN current_location.name = “Case 5” |
Will return one or more records for items that moved to Case 5 on 5 May 2017. |
creator = “Brady, Mathew” AND (title = plain OR title = field) |
Will return one or more records for objects created by Mathew Brady with either the word plain or field in the Title field. |
Set(s)
When your search is run, your search statement is added to the Set(s) table at the bottom of the Advanced tab. From there it can be:
-
Retrieved: the same records returned when the search statement was added to the Set(s) table will be listed even if new records meet the search criteria.
-
Executed: the search statement is run; if your data has changed since the search statement was added to the Set(s) table, the set of records returned may be different to the retrieved set.
-
Copied to the Search statement box and modified; and combined with other sets.
Every time an Advanced search is run, the search statement is added to the Set(s) table (if you run the same Advanced search twice, it will be listed in the Set(s) table twice). Until you log out of Collections or close the browser you can access your search statements:
A drop down menu is available from the three vertically aligned dots in a column header with options to sort and filter sets. Columns can also be rearranged temporarily (click a column header, drag left or right and release the mouse button).
The following options are available once a search statement has been added to the Set(s) table:
Option | Details |
---|---|
Select set |
Select a row in the Set(s) table and click Select set to retrieve the same records that were returned when the search statement was added to the Set(s) table. Alternatively6, double-click a row in the Set(s) table. If the search statement is name _ wood and two records were returned when the search was added to the Set(s) table, the same two records will be retrieved even if another record now meets the search criteria. Note: To re-run the search, see Copy set. |
Remove set |
Select a row in the Set(s) table and remove it from the Set(s) table. Note: This only removes the search statement from the Set(s) table, it does not delete records. |
Clear sets |
Remove all search statements from the Set(s) table. Note: This only removes search statement(s) from the Set(s) table, it does not delete records. |
Copy set |
Select a row in the Set(s) table and copy the search statement to the Search statements box. Note: This will overwrite anything in the Search statement box. The search statement can be edited and/or the search can be executed. Click Find to execute the search statement. If your data has changed since the search statement was added to the Set(s) table, the set of records returned may be different to the set returned with Select set. For example, if your search statement is name _ wood and two records were returned when the search statement was added to the Set(s) table but a new record is added that meets the search criteria, three records will be listed. |
Create saved search |
Select a row in the Set(s) table and save the search statement as a Saved search. When you log out of Collections search statements listed in the Set(s) table are forgotten. With the Create saved search button it is possible to save the currently selected search statement in the Set(s) table as a Saved search. Saved searches can then be re-run at any time from the Saved searches tab, or by selecting Manage saved searches in the Result set View and Gallery View toolbars. |
Recall a search statement and combine search statements
Each search statement is assigned a number and it can be referenced in the Search statement box with this number. For example, we can recall search statement 123 by typing set 123 into the Search statement box:
Note: This does not execute the search, it recalls the records that were returned when the search statement was added to the Set(s) table. To execute (re-run) a search, select a set, click Copy set and then click Find.
We can also combine sets using any of the Boolean operators, e.g.:
set 123 AND set 122
or combine sets with search statements, e.g.:
set 123 AND material = canvas
Additional Advanced search options
With the Create saved search button it is possible to save a search statement listed in the Set(s) table as a Saved search; Saved searches can be re-run, scheduled and deleted from the Saved searches tab, or by selecting Manage saved searches in the Result set View and Gallery View toolbars:
- Select a search statement in the Set(s) table.
- Click Create saved search.
A pop-up box will ask you to name the new saved search.
- Enter a name and click OK to save the search statement.
Groups of records (aka a Write set or Saved search) can be saved and accessed at any time (see Group records for more details). Each group of records has a unique reference number in the current data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on.. For example, a search in Persons and institutions for Russians born in the 19th Century is saved as a group and it is assigned the reference number 2:
Tip: Record groups can be accessed by selecting Manage saved searches in the Result set View and Gallery View toolbars; and on the Saved searches tab.
The pointer keyword allows us to reference these record groups in an Advanced search. For example, the following search statement would return records in a group that has the reference number 2:
pointer 2
Of course, this example is not particularly useful as it is a simple matter to return records in a group on the Saved searches tab; the value of the pointer keyword is more apparent when it is used in combination with other search terms.
For example, the group with reference number 3 contains objects where the creator name is Atkins, Nancy
:
The following search will return any objects in which the title contains the word captain and the creator is Nancy Atkins:
title _ captain AND pointer 3
Obviously, the following search statement would achieve the same result:
title _ captain AND creator = "Atkins, Nancy"
but keep in mind that the search statement that generates group 3
could be far more complex than just a creator's name.
And, unlike the set keyword, which can only reference a search statement created in the current session (sets are forgotten when you log out of Collections), record groups (Write sets) persist beyond the current session (they must be deleted to remove them) and the records in a group do not need to have been returned by a search (full details here).
As we have seen, we can search for anything in the current data source, including values stored in a Linked field A type of field used to link one record to another. A Linked field is a drop list of values (records that the field can link to). When a link is made, the field stores a reference to the linked record (a linkref).. For example, the following search in the Object catalogue will locate any objects where the Creator field contains the name Arthur Boyd:
creator = "Boyd, Arthur"
But of course the Creator field is a Linked field that links to records in another data source, Persons and institutions in this case, and those records contain far more data than just a person's name, including birth and death dates, nationality, location, and so on. With the Advanced search Indirection option we are able to search any field in a linked data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on..
To construct an Indirection search statement:
- Double-click the name of a Linked field in the Fields list, or type it directly into the Search statement box.
- Type the Indirection operator after the Linked field name:
->
- Enter any search statement as if you were performing the search in the linked data source. In other words, the search statement to the right of the Indirection operator is a fully formed Advanced search statement in its own right.
To demonstrate: while it is possible to search the Object catalogue for creators by their name, we cannot search the Object catalogue itself for creators whose nationality is, say, Russian. But that information is stored in records in Persons and institutions. If we were searching Persons and institutions for people whose nationality is Russian, we would specify:
nationality = Russian
To search the Object catalogue for objects created by someone whose nationality is Russian we can use the Indirection option:
creator -> nationality = Russian
Note: While it is possible to search fields that are not indexed in the linked data source, the search will be much slower than searching indexed fields.
- Search the Object catalogue for posters linked to films with Tom Hanks as an actor:
object_name = 'film poster' AND related_object.reference -> (cast.name = 'hanks, tom' WHEN cast.credit_type = actor)
In this example, the Linked field is Related object (related_object.reference (rt)) and the search statement includes Boolean operators on both sides of the Indirection operator.
- Search the Exhibitions data source for objects with creators born in Melbourne. In this example, the Indirection option extends to two linked data sources sequentially:
object.object_number -> creator -> birth.place = melbourne
where:
- object.object_number is a Linked field in Exhibitions, linking to the Object catalogue.
- creator is a Linked field in the Object catalogue.
- birth.place is a field in Persons and institutions that records a person's place of birth.
- Search for objects in the Object catalogue by an Institution code, NA in this example:
institution.name -> institution_code = NA
where:
institution.name is a Linked field in the Object catalogue.
institution_code is a field in Persons and institutions; its value is merged-in in an Object catalogue record when linked to the record of an institution:
Referencing a record group (aka Write set) in the linked data source
As we saw above, the pointer keyword allows us to reference a record group (aka a Write set or Saved search) in an Advanced search.
With the Indirection option, in combination with the pointer keyword, it is possible to query a record group in a linked data source by referencing the group's reference number.
For example, we can search for all objects in the Object catalogue with a Creator saved to this Persons and institutions group:
creator -> pointer 2
When viewing search results in Result set View it is possible to sort records by values in one or more columns.
It is also possible to modify your search statement so that the search results are already sorted when you view them in any of the Display Views.
For example:
title = * AND creator= * sort creator
will return all records with a title and creator and sort them alphabetically (A to Z) by creator.
To sort records on more than one field, list fields in the desired sort order separated by commas, e.g.:
title = arc* sort author, title
Sort order
By default the sort order of fields is ascending: A to Z for text fields; 1 to 9 for numeric fields; earliest to latest for date fields.
Note: When the sort order is ascending, records with no value in the sort field will be listed first.
To reverse the order, add descending after the field name, e.g.:
title = arc* sort author descending
It is possible to sort on multiple fields in ascending and descending order. For example:
title = * AND dating.date.start = * sort dating.date.start, creator descending
will first sort records by date (earliest to latest) and any records with the same date will then be sorted by creator (Z to A).
More details
See Sort records (and items in any table) for full details about sorting records.
Rather than returning all records that match your search criteria, you can return a random sample of matching records.
The syntax for returning a sample is:
<search statement> random number seed seed number unique
where:
<search statement> |
is your search statement. For example, to return all records in the current data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. your search statement is just one word: all |
number |
is the maximum number of records to include in the sample of records returned by your search statement. For example: object_name = painting random 10 will randomly select and return 10 records that match the search statement object_name = painting This example:
searches all records in the current data source and randomly selects 10 of them. Note: If number is greater than the number of records returned by your search, one or more records will appear more than once in the sample. See unique below. |
seed seed number |
is optional. Any algorithm designed to generate a random number will generate the exact same results every time it is run if the inputs are the same. To generate a different number every time its sampling algorithm is run, Collections uses a constantly changing seed number: the current date and time. By specifying a seed number, the same sample of records will be returned every time the search is run. Replace seed number with a number. |
unique |
is optional. Include unique to ensure that a record only occurs once in your sample. By default, the random generation of a sample of records can mean that the same record appears more than once in your sample. If the number of records returned by your search statement is less than number, records will certainly occur more than once. With unique, a record will only occur once in the sample and the sample can never be greater than the total search result. For example: object_name = painting random 10 unique The 10 records in the sample will all be different. If there are only 9 records where object_name = painting, the sample will only include 9 records. |
Sorting your sampled records
When you make use of the random
operator in an Advanced search it is not possible to sort the records returned in Result set View using the sort options in a column header (i.e. by clicking the ellipsis and selecting a sort option):
In order to sort results returned with the random
operator it is necessary to include the sort
operator in your Advanced search statement. For example:
all sort object_number random 10
This search statement searches all records in the data source, randomly selects 10 of them and sorts them by object number in ascending order.
Tip: The random
operator always follows the search statement.
Tip: By including the sort
operator in the search statement it is possible to sort your random records on any indexed field, not only those displaying in Result set View.
With the count function7 it is possible to search for records based on the number of occurrences If a field in the current record can have more than one value, we add an occurrence of the field for each value (e.g. a book can have multiple authors so we add an occurrence of the author.name (au) field for each author). An occurrence can be a member of a group of fields, and adding an occurrence of the field adds all members of the group at once. of a field; for example, it is possible to find all object records with more than one creator or with more than one image reference or with exactly two object names. The format of count is:
count(<tag_or_field_name>)
The count function is used in conjunction with relational operators (=
, >
, <
, >=
, <=
) and an integer to return records that match the condition. For example, to find all records that have more than one title you would specify:
count(TI) > 1
Using Boolean operators (AND, NOT and AND NOT only) the count function can be combined with other search statements, e.g.:
Df = Manifestation AND count(TI) >= 2
Linked fields
When using count on Linked field A type of field used to link one record to another. A Linked field is a drop list of values (records that the field can link to). When a link is made, the field stores a reference to the linked record (a linkref). it was previously necessary to use the tag of the Link field (the lref
) rather than the tag for the Field itself. From Collections 1.10.2 onwards this is no longer the case and you can use the tag for the Field itself.
A Linked field links the current record to a record in the same or another data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on.. In this example, the Author field (author.name (ya)) links a record for a book in the Library catalogue to a record for the author in Persons and institutions. The unique record number (priref A record's unique identifier. Currently, the simplest way to view a record's unique identifier is to add the priref column to Result set View. The field tag for the priref field is %0.) for the linked record is not stored in author.name (ya) but rather in a back-end field called a Forward reference field or lref. The lref is listed in the Field properties box as the Link reference field8:
For versions of Collections older than 1.10.2, when using count on Linked fields it is necessary to use the tag of the Link reference field (the lref
) not the tag for the Field itself. For example, when using count on the Author Linked field (author.name (ya)) to search for books with multiple authors, you would specify:
count (ua) > 1
From Collections 1.10.2 onwards this is no longer the case and you can use the tag for the Field itself, e.g.:
count (au) > 1
Details about data sources The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. and their sub-divisions can be found here. In summary, some data sources have been divided into two or more sections to better manage related groups of records. Each division is considered a data source in its own right. For example, you may find that the Catalogue has six divisions:
- Moving image catalogue
- Object catalogue
- Archives catalogue
- Library catalogue
- Accessions
- Non-collection items and accessories
Each data source is assigned a record number range in a database table; this number range is known as a dataset. A database table will always have one dataset (with the full range of record numbers available), but there may be one or more sub-divisions within this record number range. For example, the database table used to store details about items in a collection might have seven datasets defined:
- fullcatalogue
- accessories
- archivecatalogue
- document
- film
- museum
- accessions
As the name suggests, fullcatalogue has the full record number range available and it is assigned to the Catalogue data source; each of the other datasets has a partial record number range and is assigned to a data source: the accessions dataset has been assigned to the Accessions data source for instance.
When you search the Accessions data source, you search the records saved in the accessions dataset.
When you search the Catalogue data source, you search the records saved in the fullcatalogue dataset, in other words all records in the database table (records saved in archivecatalogue, document, film, museum, accessories and accessions).
When working in a top level data source The management of a collection can involve a vast amount of information about objects / items / books, people and organizations, events, administration and more. This information is stored as records in data sources. Each data source stores a specific type of information: details about collection items, people, events, loans, and so on. such as Catalogue, it is possible to limit your search to one or more of its sub-divisions: the Object catalogue, Archives catalogue, or Library catalogue data sources for instance. You need to know the name of the dataset A record number range in a database table used to group similar types of records. A database table will always have one dataset (with the full range of record numbers), but there may be one or more sub-divisions within this record number range. It is possible to work with (e.g. search) a sub-divided dataset or the full dataset (each sub-division simultaneously). Each dataset is considered a data source in its own right. that is associated with a data source (and this requires access to your Application definition in Axiell Designer).
The syntax for searching a dataset is:
dataset = dataset_name
This is added to your search statement.
For example, when working in the Catalogue data source, you can limit your search to records with a creator in the Object catalogue data source:
creator = * AND dataset = museum
To search across more than one dataset, list the datasets separated by commas:
creator = * AND dataset = museum, film
To locate all records in just the museum dataset, your search statement would be:
dataset = museum